# -*-makefile-*-
# Makefile.in
# @configure_input@

repmgr_subdir = .
repmgr_top_builddir = .

MODULE_big = repmgr

EXTENSION = repmgr

DATA = \
  repmgr--unpackaged--4.0.sql \
  repmgr--4.0.sql \
  repmgr--4.0--4.1.sql \
  repmgr--4.1.sql \
  repmgr--4.1--4.2.sql \
  repmgr--4.2.sql \
  repmgr--4.2--4.3.sql \
  repmgr--4.3.sql\
  repmgr--4.4.sql\
  repmgr--5.0.sql

REGRESS = repmgr_extension

# Hacky workaround to install the binaries
SCRIPTS_built = repmgr repmgrd

all: \
	repmgr \
	repmgrd

# When in development add -Werror
PG_CPPFLAGS = -std=gnu89 -I$(includedir_internal) -I$(libpq_srcdir) -Wall -Wmissing-prototypes -Wmissing-declarations $(EXTRA_CFLAGS)
SHLIB_LINK = $(libpq)



OBJS = \
	repmgr.o

include Makefile.global

ifeq ($(vpath_build),yes)
	HEADERS = $(wildcard *.h)
else
	HEADERS_built = $(wildcard *.h)
endif

$(info Building against PostgreSQL $(MAJORVERSION))

REPMGR_CLIENT_OBJS = repmgr-client.o \
	repmgr-action-primary.o repmgr-action-standby.o repmgr-action-witness.o \
	repmgr-action-bdr.o repmgr-action-cluster.o repmgr-action-node.o repmgr-action-daemon.o \
	configfile.o configfile-scan.o log.o strutil.o controldata.o dirutil.o compat.o dbutils.o sysutils.o
REPMGRD_OBJS = repmgrd.o repmgrd-physical.o repmgrd-bdr.o configfile.o configfile-scan.o log.o dbutils.o strutil.o controldata.o compat.o sysutils.o
DATE=$(shell date "+%Y-%m-%d")

repmgr_version.h: repmgr_version.h.in
	sed '0,/REPMGR_VERSION_DATE/s,\(REPMGR_VERSION_DATE\).*,\1 "$(DATE)",' $< >$@
	sed -i -E 's/PG_ACTUAL_VERSION_NUM/PG_ACTUAL_VERSION_NUM $(VERSION_NUM)/' $@

configfile-scan.c: configfile-scan.l

$(REPMGR_CLIENT_OBJS): repmgr-client.h repmgr_version.h

repmgr: $(REPMGR_CLIENT_OBJS)
	$(CC) $(CFLAGS) $(REPMGR_CLIENT_OBJS) $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)

repmgrd: $(REPMGRD_OBJS)
	$(CC) $(CFLAGS) $(REPMGRD_OBJS) $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)

$(REPMGR_CLIENT_OBJS): $(HEADERS)
$(REPMGRD_OBJS): $(HEADERS)

# Ensure Makefiles are up-to-date (should we move this to Makefile.global?)
Makefile: Makefile.in config.status configure
	./config.status $@

Makefile.global: Makefile.global.in config.status configure
	./config.status $@

doc:
	$(MAKE) -C doc all

install-doc:
	$(MAKE) -C doc install

clean: additional-clean

maintainer-clean: additional-maintainer-clean

additional-clean:
	rm -f *.o

additional-maintainer-clean: clean
	$(MAKE) -C doc maintainer-clean
	rm -f config.status config.log
	rm -f config.h
	rm -f repmgr_version.h
	rm -f Makefile
	rm -f Makefile.global
	@rm -rf autom4te.cache/

ifeq ($(MAJORVERSION),$(filter $(MAJORVERSION),9.3 9.4))
# We must emulate SCRIPTS_built for Pg < 9.5 as PGXS doesn't support it
install: install-scripts
install-scripts:
	$(INSTALL_SCRIPT) $(SCRIPTS_built) '$(DESTDIR)$(bindir)/'
.PHONY: install-scripts
installdirs: installdirs-scripts
installdirs-scripts:
	$(MKDIR_P) '$(DESTDIR)$(bindir)'
.PHONY: installdirs-scripts
endif

